/*
 * @Author: zxc
 * @Date: 2020-08-03 12:56:51
 * @LastEditTime: 2020-08-03 14:29:58
 * @LastEditors: zxc
 * @Description: 枚举
 */
enum Status {
  Uploading=9,
  Success,
  Failed
}
// console.log(Status.Success)

// 反向映射
// console.log(Status)

// 字符串枚举
enum Message{
  Error = 'Sorry,error',
  Success = 'hOHO,success',
  Faild = Error
}
// console.log(Message.Faild)

// 异构枚举
enum Result {
  Faild= 404,
  Success = 'yes'
}

// 枚举成员类型 和联合枚举类型
/**
 * 只有以下几种可以
 * 1. enum E { A }
 * 2. enum E { A = 'a' } 
 * 3. enum E { A = -1}
 */
enum Animals{
  Dog = 1,
  Cat = 2
}
interface Dog{
  type:Animals.Dog
}
const dog:Dog = {
  type:Animals.Dog
}
console.log(dog);

// 联合枚举类型
enum Staus{
  Off,
  On
}
interface Light{
  status:Staus
}
const light:Light = {
  status:Staus.Off
}


// 加const在使用的时候，js编译过后在使用处将不是一个对象
// const enum Anis{
  
// }